home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1996 February
/
EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso
/
earcd
/
comm2
/
zpont311.lha
/
zpoint-3.11
/
Rexx
/
RequestAm.zprx
< prev
next >
Wrap
Text File
|
1995-06-23
|
6KB
|
294 lines
/*
$VER: RequestAm.zprx 1.0 (18.6.95) Copyright (c) Frank Dietrich.
Ein ARexx-Skript für "Zodiac's Point" (basierend auf dem Skripten
'RequestFC.zprx 1.0' von Ralph Seichter, AminetReq.zprx von Jan
Ritzerfeld und von RequestAm.mdmrexx von Erik Kraemer).
Das Skript benötigt Jürgen Kohrmeyer's "rexxtricks.library" (V38.1
oder besser) und Ralph Seichter's "Zodiac's Point" (V37.158 oder
besser; ältere ZP-Versionen sind dafür leider nicht geeignet).
FUNKTIONSBESCHREIBUNG:
Dieses Script durchsucht ein 'Aminet-Readme' Verzeichnis oder 'INHALT'
Nachricht von 'MAPS' der Boxsoftware 'Ambos' nach requestbaren Dateien.
Alle gefundenen Dateien werden alphabetisch sortiert in einem Fenster auf
dem Screen von 'ZPoint' dargestellt. Hier können Sie die gewünschten
Dateien auswählen und requesten, Multiselect ist dabei möglich. Die
Dateien werden per 'REQUEST' von 'MAPS' angefordert.
INSTALLATION:
Kopieren sie dieses Skript ins Rexx-Verzeichnis von ZP. Sie können
es dann an das Gadget [Bestellen] binden, indem Sie in der Datei
"maps/request.zp" den Text
.key FILE/A,SCREEN/A
.bra {
.ket }
Delete >NIL: {FILE} QUIET
Run >NIL: SYS:Rexxc/RX ZPoint:Rexx/RequestAm.zprx {SCREEN}
eintragen (bitte passen Sie ggf. den Pfad für 'RX' an).
AUTOR DIESES SKRIPTS:
Frank Dietrich
Bliesstr. 35 EMail: f.dietrich@groenld.sb.sub.de
66538 Neunkirchen
ANPASSEN DES SKRIPTS:
Am Anfang des Skripts können einige Parmeter eingestellt werden:
mapsadr - Adresse des MAPS-Dienstes
filelaenge - Stellt ein, ob die Filelängen im Fenster angezeigt
werden sollen. 0 = aus, 1 = ein
brettname - Stellt ein, ob die Brettnamen im Fenster angezeigt
werden sollen. 0 = aus, 1 = ein
fensterbreite = Stellt die Breite des Listview-Fensters ein
Pfad = wo das Verzeichnis Aminet/Readmes liegt
*/
mapsadr = 'MAPS' /* oder 'maps@<server>.<domain>' */
filelaenge = 1
brettname = 1
fensterbreite = 704
Pfad = '/<BINAER-AMIGA>' /* kein Unterverzeichnis '' */
/********************************************************************/
/*** !!! BITTE AENDERN SIE UNTERHALB DIESER ZEILE NICHTS MEHR !!! ***/
/********************************************************************/
PARSE ARG zp
zp = COMPRESS(zp)
IF (zp = '') THEN
zp = 'ZPoint'
OPTIONS RESULTS
ADDRESS VALUE zp
IF (~SHOW('LIBRARIES', 'rexxtricks.library')) THEN
IF (~ADDLIB('rexxtricks.library', 0, -30, 38)) THEN DO
requestnotify 'Kann rexxtricks.library nicht öffnen!'
EXIT
END
IF (~SHOW('LIBRARIES','rexxsupport.library')) THEN
IF (~ADDLIB('rexxsupport.library', 0, -30, 0)) THEN DO
requestnotify 'Kann rexxsupport.library nicht öffnen!'
EXIT
END
/* Absender und Betreff auslesen */
messageinfo author
absender = RESULT
messageinfo fullsubject
betreff = RESULT
/* Prüfen, ob es eine 'INHALT' Nachricht von MAPS ist oder */
/* ein Aminet-Readme Datei ist */
if (~MATCHPATTERN(absender,'MAPS@#?') & ~MATCHPATTERN(betreff,'INHALT')) THEN DO
if (~MATCHPATTERN(absender,'aminet@#?')) THEN DO
requestnotify 'Keine MAPS oder Aminet Nachricht!'
EXIT
END
END
/* Nachrichtenrumpf auslagern und Datei zum Lesen öffnen */
inname = 'T:1-RequestAm.tmp'
outname = 'T:2-RequestAm.tmp'
savemessagebody inname
IF (~RC) THEN DO
requestnotify 'Kann Nachricht nicht speichern!'
EXIT
END
IF (~READFILE(inname,'zeile')) THEN DO
requestnotify 'Kann ' || inname || ' nicht lesen!'
EXIT
END
/* Je nach Nachricht das richtige Unterprogramm aufrufen */
if (MATCHPATTERN(betreff,'INHALT')) THEN
CALL inhalt
ELSE
CALL aminet
/* Auslagerungsdatei schließen und löschen */
dummy = DELETE(inname)
/* ListView-Fenster Definition */
windef.pubscreen = zp
windef.title = 'Zu requestende Dateien auswählen'
windef.gadgettext = '_Requesten|_Abbrechen'
windef.sort = 'TRUE'
windef.font = 'DEFAULT'
windef.width = fensterbreite
/* ListView-Fenster öffnen */
IF (VIEWLIST('string', 'windef', 'destvar')) THEN DO
IF (~OPEN('temp2', outname, 'WRITE')) THEN DO
BEEP()
EXIT
END
sendmail = 0
DO i = 1 TO destvar.0
x = LSEARCH(destvar.i, 'string')
IF (x ~= (-1)) THEN DO
dummy = WRITELN('temp2', request.x)
sendmail = 1
END
END
dummy = CLOSE('temp2')
IF (sendmail) THEN DO
writemessage 'FILE ' || outname || ' RECEIVER ' || mapsadr || ' SUBJECT REQUEST'
IF (RESULT = '') THEN DO
requestnotify 'Kann Bestellung nicht verschicken!'
EXIT
END
ELSE
requestnotify 'Bestellung verschickt.'
END
ELSE
dummy = DELETE(outname)
END
/* Skript beenden */
EXIT(0)
/* 'INHALT' von 'MAPS' nach requestbaren Files durchsuchen */
inhalt:
nummer = 1
DO i = 1 TO zeile.0
IF LEFT(zeile.i,11) = '** INHALT :' THEN DO
aktuellbrett = SUBSTR(zeile.i,13)
END
IF DATATYPE(WORD(zeile.i,1)) = 'NUM' THEN DO
string.nummer = SUBSTR(zeile.i,5,20)
request.nummer = aktuellbrett string.nummer
/* Filelaenge kommt dazu */
string.nummer = string.nummer RIGHT(WORD(zeile.i,5),4)
/* Datum kommt dazu */
string.nummer = string.nummer RIGHT(WORD(zeile.i,3),5)
/* Beschreibung kommt dazu */
string.nummer = string.nummer SUBWORD(zeile.i,6)
nummer = nummer+1
END
END
string.0 = nummer-1
RETURN
aminet:
JUMPTOMESSAGE 1
COUNT ALL
zeilen = RESULT
DO i=1 to zeilen
MESSAGEINFO RECEIVER
empfaenger = result
MESSAGEINFO SUBJECT
betreff = result
CALL auslagern
string.i = delstr(betreff,length(betreff)-6)
request.i = Pfad||empfaenger string.i'.lha'
string.i = LEFT(string.i,20)
/* Beschreibung kommt dazu */
beschreibung = STRIP(SUBSTR(zeile.1,8),'L')
string.i = string.i LEFT(beschreibung,50)
DOWN 1
END
string.0 = zeilen
RETURN
/* Nachricht auslagern, einlesen und wieder loeschen */
auslagern:
/* Auslagern */
savemessagebody 'T:Request-Rexx.temp'
IF (~RC) THEN DO
requestnotify 'Kann Nachricht nicht speichern!'
EXIT
END
/* Einlesen */
IF ~READFILE('T:Request-Rexx.temp','zeile') THEN
EXIT(10)
/* Loeschen */
dummy = DELETE('T:Request-Rexx.temp')
RETURN
/* EOF */